home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / STUTTGART / FROMUTS / UNIXLIB37B / src / c / memcpy < prev    next >
Text File  |  1991-10-06  |  2KB  |  102 lines

  1. #ifdef __STDC__
  2. static char sccs_id[] = "@(#) memcpy.c 1.0 "__DATE__" HJR";
  3. #else
  4. static char sccs_id[] = "@(#) memcpy.c 1.0 26/9/90 HJR";
  5. #endif
  6.  
  7. /* memcpy.c (c) Copyright 1990 H.Rogers */
  8.  
  9. #include <string.h>
  10.  
  11. #ifdef ARCH
  12. extern void *__memcpy(void *,const void *,size_t);
  13. #endif
  14.  
  15. #ifdef __STDC__
  16. void *(memcpy)(register void *s1,register const void *s2,register size_t n)
  17. #else
  18. void *(memcpy)(s1,s2,n)
  19. register void *s1;
  20. register const void *s2;
  21. register size_t n;
  22. #endif
  23. #ifdef ARCH
  24. { return(__memcpy(s1,s2,n)); }
  25. #else
  26. {
  27. register unsigned char *_s1 = (unsigned char *)s1,*_s2 = (unsigned char *)s2;
  28.  
  29. if (_s1 == _s2) return(s1);
  30. if (_s1 < _s2)
  31.   {
  32.   while (n & 0x07)
  33.     {
  34.     n--;
  35.     *_s1++ = *_s2++;
  36.     }
  37.   n >>= 3; while (n)
  38.     {
  39.     n--;
  40.     *_s1++ = *_s2++;
  41.     *_s1++ = *_s2++;
  42.     *_s1++ = *_s2++;
  43.     *_s1++ = *_s2++;
  44.     *_s1++ = *_s2++;
  45.     *_s1++ = *_s2++;
  46.     *_s1++ = *_s2++;
  47.     *_s1++ = *_s2++;
  48.     }
  49.   }
  50. else
  51.   {
  52.   _s1 += n; _s2 += n;
  53.  
  54.   while (n & 0x07)
  55.     {
  56.     n--;
  57.     *--_s1 = *--_s2;
  58.     }
  59.   n >>= 3; while (n)
  60.     {
  61.     n--;
  62.     *--_s1 = *--_s2;
  63.     *--_s1 = *--_s2;
  64.     *--_s1 = *--_s2;
  65.     *--_s1 = *--_s2;
  66.     *--_s1 = *--_s2;
  67.     *--_s1 = *--_s2;
  68.     *--_s1 = *--_s2;
  69.     *--_s1 = *--_s2;
  70.     }
  71.   }
  72.  
  73. return(s1);
  74. }
  75. #endif
  76.  
  77. #ifdef __STDC__
  78. void *(memmove)(register void *s1,register const void *s2,register size_t n)
  79. #else
  80. void *(memmove)(s1,s2,n)
  81. register void *s1;
  82. register const void *s2;
  83. register size_t n;
  84. #endif
  85. #ifdef ARCH
  86. { return(__memcpy(s1,s2,n)); }
  87. #else
  88. { return(memcpy(s1,s2,n)); }
  89. #endif
  90.  
  91. #ifdef __STDC__
  92. void *(bcopy)(register const void *s1,register void *s2,register size_t n)
  93. #else
  94. void *(bcopy)(s1,s2,n)
  95. register void *s1;
  96. register const void *s2;
  97. register size_t n;
  98. #endif
  99. {
  100. return(bcopy(s1,s2,n));
  101. }
  102.